﻿// dlibcallstatic.cpp : Defines the entry point for the console application.
//



#include <cstdio>

#include "..\\dlib\\dlib.h"

#pragma comment(lib,"..\\Debug\\dlib.lib")

/*
.lib文件中仅仅是关于其对应DLL文件中函数的重定位信息
程序员在建立一个DLL文件时，连接器会自动为其生成一个对应的.lib文件，该文件包含了DLL 导出函数的符号名及序号（并不含有实际的代码）。
在应用程序里，.lib文件将作为DLL的替代文件参与编译

*/

/*
静态调用方式不再需要使用系统API来加载、卸载DLL以及获取DLL中导出函数的地址。
这是因为，当程序员通过静态链接方式编译生成应用程序时，应用程序中调用的与.lib文件中导出符号相匹配的函数符号将进入到生成的EXE 文件中，
.lib文件中所包含的与之对应的DLL文件的文件名也被编译器存储在 EXE文件内部。当应用程序运行过程中需要加载DLL文件时，Windows将根据这些信息发现并加载DLL，然后通过符号名实现对DLL 函数的动态链接。这样，
EXE将能直接通过函数名调用DLL的输出函数，就象调用程序内部的其他函数一样
*/
extern "C" int __declspec(dllimport) multiply(int x, int y);
extern "C" int __declspec(dllimport) substract2(int x, int y);

int main(int argc, char* argv[])
{

	printf("10 * 2 =  %d", multiply(10, 2));
	//printf("10 - 2 =  %d", substract2(10, 2));
	return 0;
}

